Utilisateur:Dr Brains/MultiUpload.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.//<source lang=javascript>//<pre><nowiki>
if(mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgTitle') == "MultiUpload"){
// mw.config.get('wgCanonicalSpecialPageName') = "MultiUpload";
importStylesheetURI('http://fr.wikipedia.org/w/index.php?title=User:Dr Brains/MultiUpload.css&action=raw&ctype=text/css');
mw.loader.load('//bits.wikimedia.org/skins-1.5/common/edit.js?283-16');
mw.loader.load('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr Brains/BotFramework.js&action=raw&ctype=text/javascript');
mw.loader.load('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr_Brains/MultiUploadUtils.js&action=raw&ctype=text/javascript');
addOnloadHook(MultiUpload_Init);
}else{
addOnloadHook(MultiUpload_AddLink);
}
var MultiUpload_Text_Title = "Importer des fichiers";
var MultiUpload_Text_File = "Fichier";
var MultiUpload_Text_CloseText = "Annuler";
var MultiUpload_Text_CloseConfirm = "Voulez-vous vraiment annuler le téléchargement de ce fichier ?";
var MultiUpload_Text_NewText = "Nouveau fichier";
var MultiUpload_Text_NewConfirm = "Voulez-vous vraiment valider ces informations et ajouter un nouveau fichier ?";
var MultiUpload_Text_OKText = "Lancer le téléversement";
var MultiUpload_Text_OKConfirm = "Voulez-vous vraiment lancer le téléversement";
var MultiUpload_Text_ToggleText = "Masquer/Afficher";
var MultiUpload_Text_RunOKTextBefore = "Le fichier « ";
var MultiUpload_Text_RunOKTextAfter = " » a été téléversé avec succès.";
var MultiUpload_ContentId;
var MultiUpload_UploadIndex = 0;
function MultiUpload_Init(){
var Title = document.getElementsByTagName('title')[0];
Title.innerHTML = MultiUpload_Text_Title;
var Content = document.getElementById("bodyContent");
if(!Content) Content = document.getElementById("mw_contentheader");
if(!Content) Content = document.getElementById("article");
if(!Content) return;
MultiUpload_ContentId = Content.id;
while(Content.firstChild){ Content.removeChild(Content.firstChild); }
var Titre = document.getElementsByTagName('h1')[0]
Titre.innerHTML = MultiUpload_Text_Title;
MultiUpload_CreateUploadForm();
}
function MultiUpload_AddLink(){
var UploadLi = document.getElementById("t-upload");
if(!UploadLi) return;
var NewLi = document.createElement('li');
NewLi.id = "t-multiupload";
var NewA = document.createElement('a');
NewA.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join("Special:MultiUpload");
NewA.innerHTML = MultiUpload_Text_Title;
NewLi.appendChild(NewA);
if(UploadLi.nextSibling){
UploadLi.parentNode.insertBefore(NewLi, UploadLi.nextSibling);
}else{
UploadLi.parentNode.appendChild(NewLi);
}
}
function MultiUpload_CreateUploadForm(){
MultiUpload_UploadIndex++
MultiUpload_ValidLastUploadForm();
var url = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join("Special:Upload");
BotFrameworkRequestGET(url, MultiUpload_InsertUploadForm, true)
}
function MultiUpload_InsertUploadForm(Req, Param){
var Content = document.getElementById(MultiUpload_ContentId);
if(!Content) return;
if(!mw.config.get('wgFileExtensions')) mw.config.get('wgFileExtensions') = getFileExtensions();
var NewFieldset = document.createElement('fieldset');
NewFieldset.id = "UploadFieldset";
var NewLegend = document.createElement('legend');
NewLegend.id = "UploadLegend";
NewLegend.innerHTML = MultiUpload_Text_File + " N°" + MultiUpload_UploadIndex;
NewFieldset.appendChild(NewLegend);
var Temp = document.createElement('div');
Temp.style.display = "none";
document.body.appendChild(Temp);
Temp.innerHTML = Req.responseText;
var UploadForm = BotFramework_getElementWithId( "mw-upload-form" , "form" , Temp );
NewFieldset.appendChild(UploadForm);
Content.insertBefore(NewFieldset, Content.firstChild);
Temp.parentNode.removeChild(Temp);
wgUploadSetup();
MultiUpload_ModifyUploadForm();
}
function MultiUpload_ModifyUploadForm(){
var OldButton = document.getElementsByName('wpUpload')[0];
var NewButtonNew = document.createElement('input');
NewButtonNew.type = "button";
NewButtonNew.id = "MultiUpload_PlusButton";
NewButtonNew.value = MultiUpload_Text_NewText;
NewButtonNew.onclick = function(){
MultiUpload_CreateUploadForm();
}
NewButtonNew.onselect = function(){
MultiUpload_CreateUploadForm();
}
OldButton.parentNode.insertBefore(NewButtonNew, OldButton);
var NewButtonOK = document.createElement('input');
NewButtonOK.type = "button";
NewButtonOK.id = "MultiUpload_OKButton";
NewButtonOK.value = MultiUpload_Text_OKText;
NewButtonOK.onclick = function(){
MultiUpload_RunUpload();
}
NewButtonOK.onselect = function(){
MultiUpload_RunUpload();
}
OldButton.parentNode.insertBefore(NewButtonOK, OldButton);
OldButton.style.display = "none";
var IgnoreWarnings = document.getElementById("wpIgnoreWarning");
if(IgnoreWarnings){
IgnoreWarnings.checked = "checked";
IgnoreWarnings.disabled = "disabled";
}
var editbox = document.getElementById('wpUploadDescription');
if (editbox){
if (editbox.value == ''){
editbox.value = "{"+"{Information\n"
+ "|Description = Indiquez ici toutes informations utiles pour comprendre ce que l'image représente\n"
+ "|Source = Indiquez ici l'adresse web où a été trouvée l'image initialement\n"
+ "|Date = \n"
+ "|Auteur = Indiquez qui est l'auteur de l'image\n"
+ "|Permission = \n"
+ "}"+"}\n\n"
+ "<!--Merci d'ajouter au moins une catégorie. Exemple : [[Catégorie:Image sur Wikipédia]]-->";
}
}
}
var MultiUpload_ParamsNames = new Array("wpUploadFile", "wpDestFile", "wpUploadDescription", "wpLicense", "wpWatchthis", "wpIgnoreWarning", "wpEditToken", "title", "wpDestFileWarningAck");
function MultiUpload_RunUpload(){
MultiUpload_UploadIndex++
MultiUpload_ValidLastUploadForm();
var AllFileParams = new Array();
for(var a=0,l=MultiUpload_UploadIndex.length;a<l;a++){
var Fieldset = document.getElementById("UploadFieldset_MU" + a);
if(!Fielset) continue;
var ThisFileParams = new Array();
for(var b=0,m=MultiUpload_ParamsNames.length;b<m;b++){
var Element = document.getElementById(MultiUpload_ParamsNames[b]+"_MU" + a);
if(!Element) Element = document.getElementByName(MultiUpload_ParamsNames[b]+"_MU" + a)[0];
if(Element){
if(Element.id){
Element.id = Element.id.split("_MU" + a).join("");
if(Element.id == "wpDestFile") ThisFileParams["wpDestFile"] = Element.value;
}
if(Element.name) Element.name = Element.name.split("_MU" + a).join("");
}
}
ThisFileParams["Index"] = a;
BotFrameworkRequestPOSTUpload(MultiUpload_RunOK, ThisFileParams );
}
}
function MultiUpload_RunOK(Req, ThisFileParams){
var Index = ThisFileParams["Index"];
var File = ThisFileParams["wpDestFile"];
var Fieldset = document.getElementById("UploadFieldset_MU" + Index);
if(!Fielset) return;
var Legend = Fieldset.getElementsByTagName('legend')[0];
if(Legend){
var NewLink = document.createElement('a');
NewLink.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join(mw.config.get('wgFormattedNamespaces')[6] + ":" + File);
NewLink.title = mw.config.get('wgFormattedNamespaces')[6] + ":" + File;
NewLink.appendChild(document.createTextNode(File));
Legend.appendChild(document.createTextNode(" — " +MultiUpload_Text_RunOKTextBefore));
Legend.appendChild(NewLink);
Legend.appendChild(document.createTextNode(MultiUpload_Text_RunOKTextAfter));
}
var Form = Fieldset.getElementsByTagName('form')[0];
if(Form){
var Result = BotFramework_Parse(Req.responseText);
var bC = MultiUpload_getElementWithId( MultiUpload_ContentId , "div" , Result );
bC.id = "Result_"+Index;
Form.parentNode.insertBefore(bC, Form);
Form.parentNode.removeChild(Form);
}
}
function MultiUpload_ValidLastUploadForm(){
var FieldSet = document.getElementById("UploadFieldset");
if(!FieldSet) return;
var Nodes = FieldSet.getElementsByTagName('*');
for(var a=0,l=Nodes.length;a<l;a++){
if(Nodes[a].tagName){
var Tag = Nodes[a].tagName.toLowerCase()
if(Tag == "input" || Tag == "textarea"){
Nodes[a].disabled = "disabled";
}
}
if(!Nodes[a].id && !Nodes[a].name) continue;
if(Nodes[a].id) Nodes[a].id = Nodes[a].id + "_MU"+ MultiUpload_UploadIndex;
if(Nodes[a].name) Nodes[a].name = Nodes[a].name + "_MU"+ MultiUpload_UploadIndex;
}
FieldSet.id = FieldSet.id + "_MU"+ MultiUpload_UploadIndex
var Legend = FieldSet.getElementsByTagName('legend')[0];
if(Legend){
var Value = Legend.innerHTML;
Legend.innerHTML = "";
var InputToggle = document.createElement('input');
InputToggle.type = "button";
InputToggle.id = "MultiUpload_ToggleButton_MU"+MultiUpload_UploadIndex;
InputToggle.value = MultiUpload_Text_ToggleText + " " + Value;
InputToggle.onclick = function(){
MultiUpload_ToggleForm(MultiUpload_getIndex(this));
}
InputToggle.onselect = function(){
MultiUpload_ToggleForm(MultiUpload_getIndex(this));
}
Legend.appendChild(InputToggle);
var InputCancel = document.createElement('input');
InputCancel.type = "button";
InputCancel.id = "MultiUpload_CancelButton_MU"+MultiUpload_UploadIndex;
InputCancel.value = MultiUpload_Text_CloseText + " " + Value;
InputCancel.onclick = function(){
MultiUpload_CancelThisUpload(MultiUpload_getIndex(this));
}
InputCancel.onselect = function(){
MultiUpload_CancelThisUpload(MultiUpload_getIndex(this));
}
Legend.appendChild(InputCancel);
MultiUpload_ToggleForm(MultiUpload_UploadIndex);
}
}
function MultiUpload_ToggleForm(Index){
var UploadForm = document.getElementById("mw-upload-form_MU"+Index);
if(!UploadForm) return;
if(UploadForm.style.display == "none"){
UploadForm.style.display = "block"
}else{
UploadForm.style.display = "none"
}
}
function MultiUpload_CancelThisUpload(Index){
var UploadFieldset = document.getElementById("UploadFieldset_MU"+Index);
if(!UploadFieldset) return;
if(confirm(MultiUpload_Text_CloseConfirm)) UploadFieldset.parentNode.removeChild(UploadFieldset);
}
// RÉCUPÉRATION DU N° D'INDEX
function MultiUpload_getIndex( Element ){
return parseInt(Element.id.replace(/[^0-9]/g, ""));
}
function MultiUpload_getElementWithId( elementId , elementTagName , elementParentNode ){
if(!elementParentNode) elementParentNode = document;
if(!elementTagName) elementTagName = "*";
if (elementParentNode.getElementById) return elementParentNode.getElementById(elementId);
var TheElement = false;
var Elements = elementParentNode.getElementsByTagName(elementTagName);
var elementcount = 0;
while(elementcount<Elements.length){
var Id = Elements[elementcount].getAttribute('id');
if(Id){
if(Id==elementId){
TheElement = Elements[elementcount];
break;
}
}
elementcount++
}
if (! TheElement) return null;
return TheElement;
}
//</nowiki></pre></source>